package mapengine.interfaces
{
import isoengine.interfaces.IMapSprite;

import values.item.BuildingItemValue;

public interface IMapBuilding extends IMapSprite
{
	function get buildingItemValue():BuildingItemValue;
	
	function get needToConstruct():Boolean;
	
	function get isUnderConstruction():Boolean;
	
	function get buildProgress():int;
	
	function get buildCount():int;
	
	function get isDoingAction():Boolean;
	
	function get canUpgrade():Boolean;
	
	function get canStash():Boolean;
	
	function get canMove():Boolean;
	
	function get canSell():Boolean;
	
	function changeState(state:int, params:Object = null):void;
	
	function changeToNextState(params:Object = null):void;
	
	function doAction(onStart:Function = null, onComplete:Function = null):void;
    
    function changeNextDirection():int;
	
	function enterActionQuene():void;
	
	function exitActionQuene():void;
	
	/**
	* 在执行建造动作前 
	* 
	*/	
	function beforeBuildAction():Boolean;
	
	/**
	 * 在执行建造动作完成后
	 * 
	 */	
	function finishBuildAction():void;
}
}